package mx.com.theboard.server.handlers;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

import com.google.appengine.api.datastore.Key;
import com.google.appengine.api.datastore.Query.FilterOperator;
import com.google.code.twig.ObjectDatastore;
import com.google.code.twig.annotation.AnnotationObjectDatastore;


import mx.com.theboard.server.DAOS.PizarronDAO;
import mx.com.theboard.shared.entidades.Nota;
import mx.com.theboard.shared.entidades.Pizarron;
import mx.com.theboard.shared.entidades.Punto;
import mx.com.theboard.shared.entidades.Usuario;

public class NotaTextoHandler extends NotaHandler{

	@Override
	public Nota guardar(Nota notac) {		

		
		ObjectDatastore datastore  = new AnnotationObjectDatastore();				
		Key key = datastore.store().instance(notac).now();
		
		Nota nota = datastore.load(key);
		
		Pizarron pizarron = datastore.load(Pizarron.class,nota.getPizarron().getIdPizarron());				
		if(pizarron.getNotas()!=null)
			pizarron.getNotas().add(nota);
		else{
			Set<Nota> set = new HashSet<Nota>();
			set.add(nota);
			pizarron.setNotas(set);
		}
		datastore.update(pizarron);
		
		//referencia al usuario
		Usuario usuario = datastore.load(Usuario.class,nota.getUsuario().getIdUsuario());
		if(usuario.getNotas()!=null)
			usuario.getNotas().add(nota);
		else{
			Set<Nota> set = new HashSet<Nota>();
			set.add(nota);
			usuario.setNotas(set);
		}
		datastore.update(usuario);
		
		//referencia en la nota
		nota.setPizarron(pizarron);
		nota.setUsuario(usuario);	
		datastore.update(nota);
		
		return nota;
	}

	@Override
	public Nota actualizaNota(Nota notac) {
		ObjectDatastore datastore  = new AnnotationObjectDatastore();
		Nota nota = datastore.load(Nota.class,notac.getIdNota());
		nota.setTitulo(notac.getTitulo());
		nota.setTexto(notac.getTexto());
		
		
		Punto pc = nota.getPunto();
		Punto p = datastore.load().type(Punto.class).id(pc.getIdPunto()).now();
		p.setX(notac.getPunto().getX());
		p.setY(notac.getPunto().getY());
		nota.setPunto(p);
		datastore.update(nota);
		datastore.update(p);
		return nota;
	}
	


}
